package com.bigpang.framework.redis.baseopt.list;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.ListPosition;

/**
 * @Author YongQiang
 * @Date 2021/6/8 15:50
 * @Version 1.0
 */
public class ListDemo {
    public static void main(String[] args) {

        Jedis jedis = new Jedis("10.130.132.137", 6379);

        jedis.lpush("keys","1","2","3","4","5","a","b","c","d");
        //1	BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素， 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
        jedis.blpop(1000, "keys");
        //2	BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素， 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
        jedis.brpop("keys","1000");
        //3	BRPOPLPUSH source destination timeout 从列表中弹出一个值，将弹出的元素插入到另外一个列表中并返回它； 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
        jedis.brpoplpush("keys", "newKeys", 1000);
        //4	LINDEX key index 通过索引获取列表中的元素
        jedis.lindex("keys", 1);
        //5	LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
        // 在5后面插入6
        jedis.linsert("keys", ListPosition.AFTER, "5", "6");
        //6	LLEN key 获取列表长度
        jedis.llen("keys");
        //7	LPOP key 移出并获取列表的第一个元素
        jedis.lpop("keys");
        //8	LPUSH key value1 [value2] 将一个或多个值插入到列表头部
        jedis.lpush("newKeys","1","2");
        //9	LPUSHX key value 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效
        jedis.lpushx("key2s","7","8","9");
        //10	LRANGE key start stop 获取列表指定范围内的元素
        jedis.lrange("keys",2,4);
        //11	LREM key count value 移除列表元素
        jedis.lrem("keys",2,"1");
        //12	LSET key index value 通过索引设置列表元素的值
        jedis.lset("keys",2,"3");
        //13	LTRIM key start stop 对一个列表进行修剪(trim)，就是说，让列表只保留指定区间内的元素，不在指定区间之内的元素都将被删除。
        jedis.ltrim("keys",2,4);
        //14	RPOP key 移除并获取列表最后一个元素
        jedis.rpop("keys");
        //15	RPOPLPUSH source destination 移除列表的最后一个元素，并将该元素添加到另一个列表并返回
        jedis.rpoplpush("keys","key2s");
        //16	RPUSH key value1 [value2] 在列表中添加一个或多个值
        jedis.rpush("keys","9","10");
        //17	RPUSHX key value 为已存在的列表添加值
        jedis.rpush("key3s","9","10");
        jedis.close();
    }
}
